<?php
require_once '../bootstrap.php';
require_once 'entities/User.php';
require_once 'utils/util.php';
require_once 'lib/smtlib2.php';

$user = new User();
define('ENABLE', 1);

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    if (isset($_GET['activateKey'])) {
        $activateKey = checkInput($_GET['activateKey']);
        $user = validateUser($entityManager, $activateKey, $user);
        if ($user !== NULL) {
            if (checkActivated($entityManager, $user->getUsuId())) {
                updateUser($entityManager, $user);
                // SE ACTIVO LA CUENTA.
                
                //Valido si el usuario vino por referido.
                if ($user->getUsuReferalId() !== NULL){
                   checkReferer($entityManager, $user->getUsuId());
                }

                header('Location: login.php');
            } else {
                // LA CUENTA YA HABIA SIDO ACTIVADA.
                header('Location: login.php');
            }
        } else {
            // CODIGO DE ACTIVACIÓN INVÁLIDO.
            header('Location: index.php');
        }
    }
} else {
    //No se pasó ningún parámetro y salio.
    header('Location: index.php');
}

function validateUser($entityManager, $activateKey, $user) {
    $user = $entityManager->getRepository('User')->findOneBy(array('usuActivateCode' => $activateKey));
    return $user;
}

function checkActivated($entityManager, $usuId) {
    $user = $entityManager->getRepository('User')->findOneBy(array('usuId' => $usuId));
    if ($user->getUsuEnable() !== 1) {
        return TRUE;
    } else {
        return FALSE;
    }
}

function updateUser($entityManager, $user) {
    $user->setUsuEnable(ENABLE);
    $entityManager->flush();
}
